
//2342.数位和相等数对的最大和
class Solution {
public:
    int maximumSum(vector<int>& nums) {
        int n=nums.size();
        unordered_map<int,int> m; //存储每一个数对和的最大值

        //获得数位和
        auto getsum=[](int x)
        {
            int sum=0;
            while(x)
            {
                sum+=x%10;
                x/=10;
            }
            return sum;
        };

        int ret=-1;
        for(int i=0;i<n;i++)
        {
            int y=getsum(nums[i]);
            if(m.count(y)) ret=max(ret,m[y]+nums[i]);  //对结果进行更新

            if(m.count(y)==0||m[y]<nums[i]) m[y]=nums[i];  //更新数位和的最大值
        }
        return ret;
    }
};